﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using RESTProcesosMCService.Dominio;
using System.Data.SqlClient;
using RESTProcesosMCService.Persistencia;

namespace RESTProcesosMCService.Persistencia
{
    public class ClienteMCDAO
    {

        public ClienteMC Crear(ClienteMC ClienteMCACrear)
        {
            ClienteMC ClienteMCCreada = null;
            string sql = "INSERT INTO t_ClienteMC VALUES (@dni, @nombre, @apellidoPaterno,@apellidoMaterno,@lineaCredito,@tarjeta)";
            using (SqlConnection cn = new SqlConnection(ConexionUtil.ObtenerCadena()))
            {
                cn.Open();
                using (SqlCommand com = new SqlCommand(sql, cn))
                {
                    com.Parameters.Add(new SqlParameter("@dni", ClienteMCACrear.dni));
                    com.Parameters.Add(new SqlParameter("@nombre", ClienteMCACrear.nombre));
                    com.Parameters.Add(new SqlParameter("@apellidoPaterno", ClienteMCACrear.apellidoPaterno));
                    com.Parameters.Add(new SqlParameter("@apellidoMaterno", ClienteMCACrear.apellidoMaterno));
                    com.Parameters.Add(new SqlParameter("@lineaCredito", ClienteMCACrear.lineaCredito));
                    com.Parameters.Add(new SqlParameter("@tarjeta", ClienteMCACrear.tarjeta));
                    com.ExecuteNonQuery();
                }
            }
            ClienteMCCreada = Obtener(ClienteMCACrear.dni.ToString());
            return ClienteMCCreada;
        }

        public ClienteMC Obtener(string dni)
        {
            ClienteMC ClienteMCEncontrada = null;
            string sql = "SELECT * FROM t_ClienteMC WHERE dni = @dni";
            using (SqlConnection cn = new SqlConnection(ConexionUtil.ObtenerCadena()))
            {
                cn.Open();
                using (SqlCommand com = new SqlCommand(sql, cn))
                {
                    com.Parameters.Add(new SqlParameter("@dni", dni));
                    using (SqlDataReader resultado = com.ExecuteReader())
                    {
                        if (resultado.Read())
                        {
                            ClienteMCEncontrada = new ClienteMC()
                            {
                                dni = (int)resultado["dni"],
                                nombre = (string)resultado["nombre"],
                                apellidoPaterno = (string)resultado["apellidoPaterno"],
                                apellidoMaterno = (string)resultado["apellidoMaterno"],
                                lineaCredito = (decimal)resultado["lineaCredito"],
                                tarjeta = (string)resultado["tarjeta"]
                            };
                        }
                    }
                }
            }
            return ClienteMCEncontrada;
        }

        public List<ClienteMC> ListarTodos()
        {
            List<ClienteMC> ClienteMCsEncontradas = new List<ClienteMC>();
            ClienteMC ClienteMCEncontrada = null;
            string sql = "SELECT * FROM t_ClienteMC";
            using (SqlConnection con = new SqlConnection(ConexionUtil.ObtenerCadena()))
            {
                con.Open();
                using (SqlCommand com = new SqlCommand(sql, con))
                {
                    using (SqlDataReader resultado = com.ExecuteReader())
                    {
                        while (resultado.Read())
                        {
                            ClienteMCEncontrada = new ClienteMC()
                            {
                                dni = (int)resultado["dni"],
                                nombre = (string)resultado["nombre"],
                                apellidoPaterno = (string)resultado["apellidoPaterno"],
                                apellidoMaterno = (string)resultado["apellidoMaterno"],
                                lineaCredito = (decimal)resultado["lineaCredito"],
                                tarjeta = (string)resultado["tarjeta"]
                            };
                            ClienteMCsEncontradas.Add(ClienteMCEncontrada);
                        }
                    }
                }
            }
            return ClienteMCsEncontradas;
        }

    }
}